CMP_ASSEMBLY = nasm
FLAGS_ASSEMBLY = -g -f elf
CARPETA_ASSEMBLY = assembly
FUENTES_ASSEMBLY = $(wildcard $(CARPETA_ASSEMBLY)/*.asm)
OBJETOS_ASSEMBLY = $(subst .asm,.o,$(FUENTES_ASSEMBLY))
CARPETA_LISTA_ASSEMBLY = $(CARPETA_ASSEMBLY)/lista
FUENTES_LISTA_ASSEMBLY = $(wildcard $(CARPETA_LISTA_ASSEMBLY)/*.asm)
OBJETOS_LISTA_ASSEMBLY = $(subst .asm,.o,$(FUENTES_LISTA_ASSEMBLY))

CMP_C = g++
FLAGS_C = -g -c
CARPETA_C = c
FUENTES_C = $(wildcard $(CARPETA_C)/*.cpp)
OBJETOS_C = $(subst .cpp,.o,$(FUENTES_C))
CARPETA_LISTA_C = $(CARPETA_C)/lista
FUENTES_LISTA_C = $(subst c/lista/test.cpp,,$(wildcard $(CARPETA_LISTA_C)/*.cpp))
OBJETOS_LISTA_C = $(subst .cpp,.o,$(FUENTES_LISTA_C))

all: ejecutable

ejecutable: main.cpp $(OBJETOS_ASSEMBLY) $(OBJETOS_LISTA_ASSEMBLY) $(OBJETOS_C) $(OBJETOS_LISTA_C)
	g++ `sdl-config --cflags --libs` -o ejecutable main.cpp $(OBJETOS_ASSEMBLY) $(OBJETOS_LISTA_ASSEMBLY) $(OBJETOS_C) $(OBJETOS_LISTA_C)
	
$(CARPETA_ASSEMBLY)/%.o: $(CARPETA_ASSEMBLY)/%.asm
	$(CMP_ASSEMBLY) $(FLAGS_ASSEMBLY) $?
	
$(CARPETA_LISTA_ASSEMBLY)/%.o: $(CARPETA_LISTA)/%.asm
	$(CMP_ASSEMBLY) $(FLAGS_ASSEMBLY) $?
	
$(CARPETA_C)/%.o: $(CARPETA_C)/%.cpp
	$(CMP_C) $(FLAGS_C) -o $@ $<
	
$(CARPETA_LISTA_C)/%.o: $(CARPETA_C)/%.cpp
	$(CMP_C) $(FLAGS_C) -o $@ $<
	
clean:
	rm ejecutable $(OBJETOS_ASSEMBLY) $(OBJETOS_LISTA_ASSEMBLY) $(OBJETOS_C) $(OBJETOS_LISTA_C)
